package com.monitor.commons.enums;

import java.lang.reflect.ParameterizedType;

/**
 * @author sunke
 * @Date 2020/3/2 10:38
 * @description
 */

public interface BaseEnum<E extends BaseEnum> {


    int getStatus();

    String getDesc();


    default Class<E> getEnumClass() {
        ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
        return (Class) type.getActualTypeArguments()[0];
    }


    default E getEnum(int status) {

        E[] enums = getEnumClass().getEnumConstants();

        for (E statusE : enums) {
            if (statusE.getStatus() == status)
                return statusE;
        }

        return enums[0];

    }





}
